package flca.osm.perst.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import flca.osm.perst.model.PNode;

public enum	FindCornersHelper
{
	INSTANCE;
	
	private Map<Integer, List<Integer>> cornerNodes = new HashMap<Integer, List<Integer>>();
	
	public void addRefNode(int aRefnode, int aWayId) 
	{
		List<Integer> wayids = cornerNodes.get(aRefnode);
		if (wayids == null) {
			wayids = new ArrayList<Integer>();
			wayids.add(aWayId);
			cornerNodes.put(aRefnode, wayids);
		} else {
			wayids.add(aWayId);
		}
	}
	
	public void updateCornerNodes()
	{
		for (int nodeid : cornerNodes.keySet()) {
			List<Integer> wayids = cornerNodes.get(nodeid);
			if (wayids.size() > 1) {
				PNode pnode = PerstDbHelper.getInstance().getRoot().nodePk.get(nodeid);
				if (pnode != null) {
					for (Integer wayid : wayids) {
						if (pnode.getWays() == null) {
							pnode.addWay(wayid);
						} else if  (!pnode.getWays().contains(wayid)) {
							pnode.addWay(wayid);
						}
					}
					pnode.modify();
					TransactionHelper.INSTANCE.incCorners();
				}
			}
		}
	}
}
